﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _83多播委托
{
    class Program
    {
        static void Main(string[] args)
        {
            Action<string, bool> a1 = TestA;
            a1 += TestB;
            a2 += TestC

            Console.ReadKey();

        }







         
        static void FuncTion()
        {
            //注意点：Func会返回最后一个注册的方法的返回值
            Func<string> f1 = test1;
            //属于增加注册方法
            f1 += test2;
            f1 += test3;
            //删减注册方法
            //f1 -= test3;

            Delegate[] d = f1.GetInvocationList();
            //for (int i = 0; i < d.Length; i++)
            //{
            //    //输出委托内部注册的方法
            //    Console.WriteLine(d[i].Method);
            //}
            foreach (var item in d)
            {
                Console.WriteLine(item.Method);
                //输出当前遍历中的方法
                Console.WriteLine(item.DynamicInvoke(null));
            }
            Console.WriteLine(f1());
        }

        static string test1()
        {
            Console.WriteLine("--------");
            return "10";
        }

        static string test2()
        {
            Console.WriteLine("++++++++");
            return "20";
        }

        static string test3()
        {
            Console.WriteLine("********");
            return "30";
        }
    }
}
